home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / dev / basic / AmosBlitz_src.lha / Sourcecodes / SoundPlayer.asc < prev   
Encoding:
Text File  |  1996-06-13  |  4.6 KB  |  244 lines

  1. Dim WINCON(1)
  2. Amos To Back 
  3. FIL$=Command Line$
  4. If FIL$="" Then Goto REQ Else Goto SP
  5. SP:
  6. _WINDOPEN[1,0,0,640,50,"Sound Player V1.0  Programmiert von Frank Otto",0]
  7.  Proc _EXAMINE_FILE[FIL$]
  8. FT$=Param$
  9. If FT$="ST" Then Goto TRACK
  10. If FT$="MED" : Goto MED
  11. End If 
  12.  
  13. REQ:
  14. _WINDOPEN[1,0,0,640,50,"Sound Player V1.0  Programmiert von Frank Otto",0]
  15.  
  16.    _WFILREQ["Ram Disk:"]
  17.    Proc _EXAMINE_FILE[FIL$]
  18.    FT$=Param$
  19.    If FT$="ST" Then Goto TRACK
  20.    If FT$="MED" Then Goto MED Else _WINDCLOSE[1] : End 
  21.    TRACK:
  22.    Led Off : Track Loop On : _WPRINT[1,"Lade Soundtracker-Module '"+FIL$+"'. "] : Track Load FIL$,5 : _WPRINT[1," Spielen... Zum Beenden ESC drücken."] : Track Play 5
  23.    Repeat : Until Key State(69) : Track Stop : _WINDCLOSE[1] : Led On : Track Loop Of : End 
  24.    MED:
  25.    Led Off : _WPRINT[1,"Lade Med-Module '"+FIL$+"'. "] : Med Load FIL$,5 : _WPRINT[1,"Spielen... Zum Beenden ESC drücken."] : Med Play 5
  26.    Repeat : Until Key State(69) : Med Stop : _WINDCLOSE[1] : Led On : End 
  27.  
  28. Procedure _WINDOPEN[N,X,Y,XX,YY,NAME$,CL]
  29.    
  30.    ' N      -  No of window.
  31.    ' X      -  Xpos of window.
  32.    ' Y      -  Ypos of window.
  33.    ' XX     -  Width of window. 
  34.    ' YY     -  Height of window.
  35.    ' NAME$  -  Title of window. 
  36.    ' CL     -  Close gadget 0=Off 1=On (WB2 Only).
  37.    
  38.    ' ERR    -  Output error code. 
  39.    
  40.    ' *** Give User Access To Error Code.
  41.    
  42.    Shared ERR,WINCON()
  43.    
  44.    ' *** Turn The X,Y,XX,YY,NAME$,CL Data Into Format Usable By DOS.
  45.    
  46.    X$=Str$(X)-" "
  47.    Y$=Str$(Y)-" "
  48.    XX$=Str$(XX)-" "
  49.    YY$=Str$(YY)-" "
  50.    CON$="CON:"+X$+"/"+Y$+"/"+XX$+"/"+YY$+"/"+NAME$
  51.    If CL=1
  52.       CON$=CON$+"/CLOSE"
  53.    End If 
  54.    CON$=CON$+Chr$(0)
  55.    
  56.    ' *** Call DOS Open Function.
  57.    
  58.    Dreg(1)=Varptr(CON$)
  59.    Dreg(2)=1005
  60.    WINCON(N)=Doscall(-30)
  61.    
  62.    If WINCON(N)=0
  63.       ERR=Doscall(-132)
  64.    End If 
  65.    
  66. End Proc
  67.  
  68. Procedure _WPRINT[N,M$]
  69.    
  70.    ' N    -  No of window.  
  71.    ' M$   -  Text to be printed.  
  72.    
  73.    ' ERR  -  Output error code. 
  74.    
  75.    ' *** Give User Access To Error Code.
  76.    
  77.    Shared ERR,WINCON()
  78.    
  79.    If WINCON(N)=0
  80.       Goto ERR
  81.    End If 
  82.    
  83.    ' *** Call The DOS Write Function. 
  84.    
  85.    Dreg(1)=WINCON(N)
  86.    Dreg(2)=Varptr(M$)
  87.    Dreg(3)=Len(M$)
  88.    X=Doscall(-48)
  89.    If X=0
  90.       Goto ERR
  91.    End If 
  92.    
  93.    Pop Proc
  94.    
  95.    ' *** In Case Of Error.
  96.    
  97.    ERR:
  98.    ERR=Doscall(-132)
  99.    
  100. End Proc
  101.  
  102.  
  103. Procedure _WINDEXECUTE[N,COM$]
  104.    
  105.    ' N     -  No of window. 
  106.    ' COM$  -  Command to execute. 
  107.    
  108.    ' ERR   -  Output error. 
  109.    
  110.    ' *** Give User Access To Error Code.
  111.    
  112.    Shared ERR,WINCON()
  113.    
  114.    If WINCON(N)=0
  115.       Goto ERR
  116.    End If 
  117.    
  118.    ' *** Call The DOS Execute Function. 
  119.    
  120.    COM$=COM$+Chr$(0)
  121.    Dreg(1)=Varptr(COM$)
  122.    Dreg(2)=0
  123.    Dreg(3)=WINCON(N)
  124.    X=Doscall(-222)
  125.    If X=0
  126.       Goto ERR
  127.    End If 
  128.    
  129.    Pop Proc
  130.    
  131.    ' *** In Case Of Error.
  132.    
  133.    ERR:
  134.    ERR=Doscall(-132)
  135.    
  136. End Proc
  137.  
  138. Procedure _WINDCLOSE[N]
  139.    
  140.    ' N    -  No of window.
  141.    
  142.    ' ERR  -  Output error.
  143.    
  144.    ' *** Give The User Access To Error Code.
  145.    
  146.    Shared ERR,WINCON()
  147.    
  148.    If WINCON(N)=0
  149.       Goto ERR
  150.    End If 
  151.    
  152.    ' *** Call DOS Close Function. 
  153.    
  154.    Dreg(1)=WINCON(N)
  155.    X=Doscall(-36)
  156.    If X=0
  157.       Goto ERR
  158.    End If 
  159.    Pop Proc
  160.    
  161.    ' *** In case of error.
  162.    
  163.    ERR:
  164.    ERR=Doscall(-132)
  165.    
  166. End Proc
  167.  
  168. Procedure _WFILREQ[PTH$]
  169.    
  170.    ' PTH$  - Directory path.  
  171.    
  172.    ' *** Give User Access To Error Code And The Filename. 
  173.    
  174.    ' *** ERR = 0  : File-Requester Program Not Found.   
  175.    '     ERR = -1 : File-Requester Program Found.   
  176.    
  177.    Shared ERR,FIL$
  178.    
  179.    ' *** Check For Requester Program. 
  180.    
  181.    If Not Exist("C:RequestFile")
  182.       ERR=0
  183.       Pop Proc
  184.    End If 
  185.    
  186.    ' *** Execute Requester Program. 
  187.    
  188.    _WINDEXECUTE[1,"C:RequestFile >Ram:AMOS-Temp.001 "+Chr$(34)+PTH$+Chr$(34)]
  189.    
  190.    ' *** Read In Selected File. 
  191.    
  192.    Open In 1,"Ram:AMOS-Temp.001"
  193.    F$=Input$(1,Lof(1))
  194.    Close 1
  195.    
  196.    ' *** Delete Temp File.
  197.    
  198.    Kill "Ram:AMOS-Temp.001"
  199.    
  200.    ' *** Arrange Filename Into String.
  201.    
  202.    I=Instr(F$,Chr$(34),2)
  203.    FIL$=Mid$(F$,2,I-2)
  204.    
  205.    ' *** Set Error Code.
  206.    
  207.    ERR=-1
  208.    
  209. End Proc
  210.  
  211. Procedure _EXAMINE_FILE[F$]
  212.    
  213.    ' *** Read File Header.
  214.    
  215.    Open In 1,F$
  216.    LF=Lof(1)
  217.    HEAD$=Input$(1,Min(LF,$440))
  218.    Close 1
  219.    
  220.    ' *** Determine File Type.   
  221.    
  222.    Restore DAT
  223.    
  224.    Repeat 
  225.       
  226.       Read S1,H1$,S2,H2$,FT$
  227.       
  228.       If Mid$(HEAD$,S1,Len(H1$))=H1$ and Mid$(HEAD$,S2,Len(H2$))=H2$
  229.          OK=1
  230.          Exit 
  231.       End If 
  232.       
  233.    Until H1$="END"
  234.    
  235.    ' *** File Header Data (Start1, Header1, Start2, Header2, File Type).  
  236.    
  237.    DAT:
  238.    Data $439,"M.K.",1,"","ST"
  239.    Data $439,"FLT4",1,"","ST"
  240.    Data 1,"MMD1",1,"","MED"
  241.    Data 1,"MMD0",1,"","MED"
  242. End Proc[FT$]
  243.  
  244.